﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using System.IO;

namespace conchaytoro
{
    public partial class graficos : Form
    {
        public graficos()
        {
            InitializeComponent();
        }

        private void graficos_Load(object sender, EventArgs e)
        {
            Grafo1();
            Grafo2();
            Grafo3();
            Grafo4();
            Grafo5();
            Grafo6();
            Grafo7();
            Grafo8();
            Grafo9();
            Grafo10();
            Grafo11();
            Grafo12();
        }

        public void Grafo1()
        {
            // Arreglos del Grafico
            string[] seriesArray = { "2002", "2003" };
            int[] pointsArray = { Convert.ToInt32(ratios.capTrab02), Convert.ToInt32(ratios.capTrab03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoCT.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoCT.Titles.Add("Capital de Trabajo");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoCT.Series.Add(seriesArray[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray[i]);
                 
            }
            
        }

        public void Grafo2()
        {
            string[] seriesArray2 = { "2002", "2003" };
            double[] pointsArray2 = { Convert.ToDouble(ratios.pagoProv02), Convert.ToDouble(ratios.pagoProv03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoPProv.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoPProv.Titles.Add("Período de pago a Proveedores");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray2.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoPProv.Series.Add(seriesArray2[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray2[i]);
            }
        }

        public void Grafo3()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.cobGF02), Convert.ToDouble(ratios.cobGF03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoCGF.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoCGF.Titles.Add("Cobertura de GG.FF");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoCGF.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo4()
        {
            Series series = new Series();            
            // Arreglos del Grafico4
            string[] seriesArray4 = { "2002", "2003" };
            double[] pointsArray4 = { Convert.ToDouble(ratios.utiVta02), Convert.ToDouble(ratios.utiVta03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoUV.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoUV.Titles.Add("Utilidad Ventas");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray4.Length; i++)
            {
                // Aqui se agregan las series o Categorias. chart1.Series[0].ChartType = SeriesChartType.Line;                
                series = this.grafoUV.Series.Add(seriesArray4[i]);
                // Aqui se agregan los Valores.                
                series.Points.Add(pointsArray4[i]);
                
            }
            /*int[] pointsArray = { 1, 2, 3 ,4 ,5 ,6 ,7,8,9,10};

            chart1.Series.Clear();
            chart1.Series.Add("Series0");
            chart1.Series[0].ChartType = SeriesChartType.Line;
            chart1.Legends.Clear();
            for (int j = 0; j <= 8; j++)
            {
                chart1.Series[0].Points.AddXY(pointsArray[j], pointsArray[j + 1]);
            }*/
        }

        public void Grafo5()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.promCob02), Convert.ToDouble(ratios.promCob03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoPCob.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoPCob.Titles.Add("Período Promedio Cobranza");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoPCob.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }
        public void Grafo6()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.rotCxC02), Convert.ToDouble(ratios.rotCxC03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoCxC.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoCxC.Titles.Add("Rotación Cuentas por Cobrar");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoCxC.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo7()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.rotCB02), Convert.ToDouble(ratios.rotCB03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoCBco.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoCBco.Titles.Add("Rotación Caja Banco");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoCBco.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo8()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.rotCart02), Convert.ToDouble(ratios.rotCart03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoRCar.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoRCar.Titles.Add("Rotación de Cartera");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoRCar.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo9()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.estCap02), Convert.ToDouble(ratios.estCap03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoECap.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoECap.Titles.Add("Estructura del Capital");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoECap.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo10()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.cobGFij02), Convert.ToDouble(ratios.cobGFij03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoGFij.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoGFij.Titles.Add("Cobertura Gastos Fijos");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoGFij.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo11()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.utiAct02), Convert.ToDouble(ratios.utiAct03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoUtiAc.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoUtiAc.Titles.Add("Utilidad Activos");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoUtiAc.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        public void Grafo12()
        {
            // Arreglos del Grafico3
            string[] seriesArray3 = { "2002", "2003" };
            double[] pointsArray3 = { Convert.ToDouble(ratios.dupont02), Convert.ToDouble(ratios.dupont03) };
            // Se modifica la Paleta de Colores a utilizar por el control.
            this.grafoDup.Palette = ChartColorPalette.SeaGreen;
            // Se agrega un titulo al Grafico.
            this.grafoDup.Titles.Add("Dupont");
            // Agregar las Series al Grafico.
            for (int i = 0; i < seriesArray3.Length; i++)
            {
                // Aqui se agregan las series o Categorias.
                Series series = this.grafoDup.Series.Add(seriesArray3[i]);
                // Aqui se agregan los Valores.
                series.Points.Add(pointsArray3[i]);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            btguardar2.Visible = false;
            guardarImagen(groupBox2, btguardar2);
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            btguardar1.Visible = false;
            guardarImagen(groupBox1, btguardar1);
                    }

        public void guardarImagen(GroupBox gb, Button bt)
        {
            SaveFileDialog guarda = new SaveFileDialog();

            //establecer un filtro

            guarda.Filter = "Imagen JPG | *.jpg";

            //mostrar el dialogo

            guarda.ShowDialog();

            //verificar si el dialogo devuelve una ruta valida

            if (guarda.FileName != "")
            {

                //crear un bitmap y setear tamaño desde el control
                Bitmap bm = new Bitmap(gb.Width, gb.Height);

                //cargar el contenido al bitmap
                gb.DrawToBitmap(bm, new Rectangle(0, 0, gb.Width, gb.Height));
                //crear un flujo para guardar los datos
                FileStream flujo = new FileStream(guarda.FileName, FileMode.Create, FileAccess.Write);

                //guardar el bm en el flujo de datos
                bm.Save(flujo, System.Drawing.Imaging.ImageFormat.Bmp);

                //cerrar el flujo
                flujo.Close();

                //limpiar la imagen de memoria
                bm.Dispose();
            }
            MessageBox.Show("Imagen Guardada existosamente.!", "Éxito", MessageBoxButtons.OK, MessageBoxIcon.Information);
            bt.Visible = true;
        }

        private void btguardar3_Click(object sender, EventArgs e)
        {
            btguardar3.Visible = false;
            guardarImagen(groupBox3, btguardar3);            
        }

        private void btguardar4_Click(object sender, EventArgs e)
        {
            btguardar4.Visible = false;
            guardarImagen(groupBox4, btguardar4);
        }
    }
}
